import { Request, RequestTaskPromise } from "qq-request";

const requestOption = {
	// 接口域名
	host: import.meta.env.VITE_BASE_URL,
	// 请求方法
	method: "GET",
	// 请求数据，GET时为QueryString，POST时为JSON
	data: undefined,
	// 接口数据类型
	dataType: "json",
	// 超时时间，单位毫秒
	timeout: 10000,
	// header头
	header: {
		"context-type": "application/json",
	},
	// 是否显示loading效果，为false时，不显示，为true时强制显示，不传时，会延迟showLoadingDelay毫秒后显示
	showLoading: undefined,
	// 延迟多长时间显示loading效果，为0时则直接显示
	showLoadingDelay: 2000,
	// 加载中文字
	loadingText: "加载中",
	// 遇到错误时是否提示
	showError: true,
	// 默认错误消息
	defaultError: "请求失败",
	// 是否对Response对象进行校验
	validate: true,
	/**
	 * 校验器
	 * @param {Response|JsonResponse} response
	 * @returns {*}
	 */
	// validator: (response) => {
	// 	if (response.getStatusCode() !== 200) {
	// 		throw new Error(`请求异常[${response.getStatusCode()}]:${response.getError()}`);
	// 	}
	// },
	// 是否只返回data层数据，不为true时，返回Response对象。
	// brief: true,
	/**
	 * 返回简易数据
	 * @param {Response|JsonResponse} response
	 * @returns {Object|*}
	 */
	// briefReturn: (response) => response.getData(),
	/**
	 * 请求拦截，在请求前对请求参数处理
	 * @param {Object} config
	 */
	before: (config) => {
		console.log('=======config', config)
		return config;
	},
	/**
	 * 响应拦截，在返回promise前，对promise处理
	 * @param {RequestTaskPromise} promise
	 * @returns {Object}
	 */
	// after: (promise) => promise,
	/**
	 * 将响应对象转换为Response对象，默认返回JsonResponse。
	 * @param {Object} response
	 * @returns {Response|JsonResponse|DownloadResponse}
	 */
	// resolver: (response) => new JsonResponse(response),
	/**
	 * 请求处理器
	 * @param {Object} config
	 * @returns {RequestTaskPromise}
	 */
	handler: (config: any) => new RequestTaskPromise((resolve: any, reject: any) => uni.request({
		url: config.url,
		data: config.data,
		header: config.header,
		method: config.method,
		dataType: config.dataType,
		success: resolve,
		fail: reject
	}))
};



export const $http = new Request(requestOption);
